#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
MP4视频压缩工具演示脚本
展示项目的主要功能
"""

import sys
import os

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

def show_project_info():
    """显示项目信息"""
    print("=" * 60)
    print("MP4视频压缩工具 - 项目演示")
    print("=" * 60)
    print("版本: 1.0.0")
    print("作者: AI助手")
    print("开发语言: Python 3")
    print("主要依赖: tkinter, ffmpeg-python")
    print()
    
    print("功能特点:")
    print("✅ 支持MP4格式视频压缩")
    print("✅ 批量处理多个视频文件")
    print("✅ 三种压缩质量预设")
    print("✅ 图形化用户界面")
    print("✅ 实时显示压缩进度")
    print("✅ 压缩前后文件大小对比")
    print("✅ 自动生成输出文件名")
    print()

def check_environment():
    """检查运行环境"""
    print("检查运行环境...")
    print("-" * 30)
    
    # 检查Python版本
    python_version = sys.version.split()[0]
    print(f"Python版本: {python_version}")
    
    # 检查依赖包
    try:
        import tkinter
        print("✅ tkinter: 已安装")
    except ImportError:
        print("❌ tkinter: 未安装")
    
    try:
        import ffmpeg
        print("✅ ffmpeg-python: 已安装")
    except ImportError:
        print("❌ ffmpeg-python: 未安装")
        print("   请运行: pip install -r requirements.txt")
    
    # 检查FFmpeg
    try:
        import subprocess
        result = subprocess.run(['ffmpeg', '-version'], 
                              capture_output=True, text=True, timeout=5)
        if result.returncode == 0:
            print("✅ FFmpeg: 已安装")
        else:
            print("❌ FFmpeg: 未正确安装")
    except:
        print("❌ FFmpeg: 未安装或不在PATH中")
    
    print()

def show_usage_guide():
    """显示使用指南"""
    print("使用指南:")
    print("-" * 30)
    print("1. 启动图形界面:")
    print("   python main.py")
    print()
    print("2. 命令行测试:")
    print("   python test_compressor.py <视频文件> [压缩预设]")
    print()
    print("3. 压缩预设选项:")
    print("   - high_quality: 高质量")
    print("   - medium_quality: 中等质量（默认）")
    print("   - small_file: 小文件")
    print()
    print("4. 项目结构:")
    print("   - main.py: 主程序入口")
    print("   - gui/: 图形界面模块")
    print("   - core/: 压缩核心逻辑")
    print("   - utils/: 工具函数")
    print("   - config/: 配置文件")
    print()

def interactive_demo():
    """交互式演示"""
    print("交互式演示:")
    print("-" * 30)
    
    while True:
        print("\n请选择要演示的功能:")
        print("1. 启动图形界面")
        print("2. 查看项目结构")
        print("3. 查看配置信息")
        print("4. 退出演示")
        
        choice = input("\n请输入选项 (1-4): ").strip()
        
        if choice == '1':
            print("\n正在启动图形界面...")
            try:
                from gui.main_window import MainWindow
                app = MainWindow()
                app.run()
            except Exception as e:
                print(f"启动失败: {str(e)}")
        
        elif choice == '2':
            print("\n项目结构:")
            show_project_structure()
        
        elif choice == '3':
            print("\n配置信息:")
            show_config_info()
        
        elif choice == '4':
            print("\n感谢使用MP4视频压缩工具演示!")
            break
        
        else:
            print("无效选项，请重新选择")

def show_project_structure():
    """显示项目结构"""
    structure = """
video_compressor/
├── main.py              # 主程序入口
├── test_compressor.py   # 命令行测试版本
├── test_gui.py         # GUI测试脚本
├── demo.py             # 演示脚本
├── gui/
│   ├── __init__.py
│   └── main_window.py   # 主界面
├── core/
│   ├── __init__.py
│   └── compressor.py    # 压缩核心逻辑
├── utils/
│   ├── __init__.py
│   └── file_handler.py  # 文件处理工具
├── config/
│   └── settings.py      # 配置文件
├── requirements.txt     # 依赖列表
├── requirements.md      # 需求文档
└── README.md           # 说明文档
    """
    print(structure)

def show_config_info():
    """显示配置信息"""
    try:
        from config.settings import (
            APP_NAME, APP_VERSION, COMPRESSION_PRESETS,
            WINDOW_WIDTH, WINDOW_HEIGHT
        )
        
        print(f"应用名称: {APP_NAME}")
        print(f"版本: {APP_VERSION}")
        print(f"窗口大小: {WINDOW_WIDTH}x{WINDOW_HEIGHT}")
        print("\n压缩预设:")
        for key, preset in COMPRESSION_PRESETS.items():
            print(f"  {key}: {preset['name']} (CRF: {preset['crf']})")
    except Exception as e:
        print(f"无法加载配置: {str(e)}")

def main():
    """主函数"""
    show_project_info()
    check_environment()
    show_usage_guide()
    
    # 询问是否进入交互式演示
    response = input("是否进入交互式演示? (y/n): ").strip().lower()
    if response in ['y', 'yes', '是']:
        interactive_demo()
    else:
        print("\n演示结束。要启动程序，请运行: python main.py")

if __name__ == "__main__":
    main()
